/*
 * @Author: ※mk9007@163.com
 * @Date: 2021-09-26 11:34:31
 * @LastEditTime: 2021-09-26 11:36:03
 * 2021-09-26 11:34:31
 * @Route: 
 * @FilePath: \code_snippet\leetcode\getSum.js
 * @Description: 
 * Copyright 2021
 * U2FsdGVkX1+ZIXU/AIJgzXNmur/kcio4wZG9DMOSf+wY3GM1S6sbp4TSbCUUC2xXHYERfgUJvuVIjCHTYsH+z9FLdxCn34dmQFGj6e6rBUiCfLqp7JRkVD+XT3AcLmHj6O3WD2ZlsHMBd3Hacgtu/nxKflgOyZtb7y2X3vgYirLr+gCTiQ8GJRw9CMXhpkRq5MsOqTenZGlGeZk7f/3vA9JUwmC/qJKdeh0UmuOUr0uy4V6NKVBjYf69n+gIY6SQ
 * ◆●○★☆
 */
/**
 * 
 * 有符号整数通常用补码来表示和存储，补码具有如下特征：
正整数的补码与原码相同；负整数的补码为其原码除符号位外的所有位取反后加 11。
可以将减法运算转化为补码的加法运算来实现。
符号位与数值位可以一起参与运算。
 * 两整数之和
 * @see https://leetcode-cn.com/problems/sum-of-two-integers/
 * @param {*} a 
 * @param {*} b 
 * @returns 
 */
var getSum = function(a, b) {
    while (b != 0) {
        const carry = (a & b) << 1;
        a = a ^ b;
        b = carry;
    }
    return a;
};